有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Firebase Android数据库查询(读取数据)

我正在尝试从firebase数据库中获取数据,其中valueNum是+91的联系人号码。我已经在附加的截图中显示了相同的内容,但当我运行代码时。它给了我一个所有用户的列表,甚至来自不同的valueNum。但是,如果我传递了错误的值,则会给出相同的结果,即没有错误database screen capture

private void funcDatabaseActivity(String valueNum) {
    databaseReference.child("users").child("registered-user/" + valueNum).addChildEventListener
            (new ChildEventListener() {
                @Override
                public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                    if (dataSnapshot.exists()) {
                        UserData data = dataSnapshot.getValue(UserData.class);
                        Toast.makeText(ContactsActivity.this, "Data Exists - " + data.getDisplayName(), Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(ContactsActivity.this, "Data Not Exists", Toast.LENGTH_SHORT).show();
                    }
                }

                @Override
                public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

                }

                @Override
                public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

                }

                @Override
                public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
}

共 (1) 个答案

  1. # 1 楼答案

    如数据库屏幕截图所示,您执行的序列不正确。我在回答中为你修改了这个

    必须采用逻辑路径才能访问特定信息。此外,您还可以阅读有关ChildEventListener的内容,它的用途,以及它与addValueEventListener之间的区别

      private void funcDatabaseActivity(String valueNum) {
            databaseReference= FirebaseDatabase.getInstance().getReference("database-find-me");
    
            databaseReference.child("users").child("registered-user").child(valueNum).addValueEventListener(new ValueEventListener() {
                @SuppressLint("SetTextI18n")
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {  
    
                 //Type here as you like
    
                }
    
                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    Toast.makeText(this, "check your internet", Toast.LENGTH_SHORT).show();
                }
            });
        }